﻿$(document).ready(function () {
    
    var canClickKey = true;
    // klikniecie na nick uzytkownika
    $('#playersTable .playerName').click(function () {
        // jezeli zadne pole nie czeka na wcisniecie klawisza
        if ($('.chooseKey').length == false) {
            // jezeli playerowi nie zostaly jeszcze przypisane klawisze
            if ($(this).hasClass('playerReady') == 0) {
                $(this).parent().children('.leftKey').text('Press desired left key').addClass('chooseKey'); // aktywacja pola wyboru lewego klawisza
                $(this).addClass('playerReady'); // player gotowy
                $(this).parent().addClass('playerReadyRow');
            }
            // odznaczenie playera
            else {
                $(this).parent().children('.leftKey').text("").removeClass('readyKey');
                $(this).parent().children('.rightKey').text("").removeClass('readyKey');
                $(this).removeClass('playerReady');
                $(this).parent().removeClass('playerReadyRow');
                $(this).parent().children('.leftKeyCode').text("");
                $(this).parent().children('.rightKeyCode').text("");
            } 
        }
    });

    // zmiana klawiszy sterowania
    $('#playersTable').on('click', '.readyKey',function () { // ta dziwna konstrukcja jest w celu przypisania metody click do dynamicznie dodanej klasy, zwykle click nie dziala
        // jezeli zadne pole nie czeka na wcisniecie klawisza
        if ($('.chooseKey').length == false) {
            $(this).removeClass('readyKey').addClass('chooseKey');

            //check if it is left or right key
            if ($(this).hasClass('leftKey')) {
                $(this).text('Press desired left key');
            }
            else {
                $(this).text('Press desired right key');
            }
        }
    });

    // wcisniecie przycisku
    $(this).keydown(function (e) {
        // jesli jakies pole nasluchuje na klawisz
        if ($('.chooseKey').length > 0 && canClickKey) {
            var chooseKey = $('.chooseKey');
            var rightKey = chooseKey.parent().children('.rightKey');
            var k = KeyCode; // sluzy do zamiany kodu znaku na jego kod normalny np: 37 -> left
            chooseKey.removeClass('chooseKey').addClass('readyKey').text(k.hot_key(k.translate_event(e)));

            // zapisujemy wartosci kodow potrzebne do pozniejszego sterowania wezykami
            if (chooseKey.hasClass('leftKey')) {
                chooseKey.parent().children('.leftKeyCode').text(e.keyCode);
            }
            else {
                chooseKey.parent().children('.rightKeyCode').text(e.keyCode);
            }

            // jezeli prawy klawisz nie zostal jeszcze wybrany to go aktywujemy do wyboru
            if (!rightKey.hasClass('readyKey')) {
                rightKey.text('Press desired right key');
                rightKey.addClass('chooseKey');
            }
            canClickKey = false;
        }
    });

    // puszczenie przycisku
    $(this).keyup(function (e) {
        canClickKey = true;
    });

    // przezroczystosc dla calego wiersza po zaznaczeniu nazwy aktywnego playera
    $('#playersTable').on('mouseover', '.playerReady', function (e) {
        $(this).parent().children('.leftKey').addClass('opacityHover');
        $(this).parent().children('.rightKey').addClass('opacityHover');
    });
    $('#playersTable').on('mouseleave', '.playerReady', function (e) {
        $(this).parent().children('.leftKey').removeClass('opacityHover');
        $(this).parent().children('.rightKey').removeClass('opacityHover');
    });

});